﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using DTO;
using DAO.bankservice;
namespace DAO
{
    public static class NhaTuyenDung_DAO
    {
        private static QLTDTVDataContext dt = new QLTDTVDataContext();
        public static IEnumerable MoTaCongTyTheoCongViec(string MaCongViec)
        {
            return dt.spMoTaCongTy(MaCongViec).AsEnumerable();
        }

        public static void LayThongTinNhaTuyenDung(string UserID, ref string TenCongTy, ref string MaNhaTuyenDung)
        {
            dt.spLayThongTinNhaTuyenDung(UserID, ref TenCongTy, ref MaNhaTuyenDung);
        }

        public static void CapNhatTinTuyenDung(ChiTietCongViec_DTO congviec)
        {
            try
            {
                dt.spCapNhatTinTuyenDung(congviec.MaCongViec.ToString(), congviec.ChucDanh, congviec.MoTaCongViec, congviec.YeuCauCongViec, congviec.NgonNgu, congviec.MaCapBac, congviec.Mucluong, congviec.NamKinhNghiem, congviec.MaLoaiHinhCongViec, congviec.Luong, congviec.SoNamKN, congviec.NgayHetHanDang);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static int ThemTinTuyenDung(ChiTietCongViec_DTO congviec, string Mct)
        {
            string ID = "";
            var list = dt.spThemCongViec(congviec.ChucDanh, congviec.MoTaCongViec, congviec.YeuCauCongViec, congviec.Mucluong, congviec.NamKinhNghiem, congviec.NgonNgu, congviec.NgayDang, congviec.NgayHetHanDang, congviec.MaNoiLamViec, int.Parse(Mct), congviec.MaLoaiHinhCongViec, congviec.MaCapBac, congviec.Luong, congviec.SoNamKN, ref ID);
            return int.Parse(ID);
        }


        public static string LayTenNhaTuyenDung(int MaNhaTuyenDung, string TenNhaTuyenDung)
        {
            TenNhaTuyenDung = "";
            dt.spLayTenNhaTuyenDung(MaNhaTuyenDung, ref TenNhaTuyenDung);
            return TenNhaTuyenDung;
        }

        public static IEnumerable LayTatCaPhi()
        {
            return dt.spLayTatCaPhi();
        }

        public static bool Register(NhaTuyenDung_DTO nhaTuyenDung)
        {
            try
            {
                string flag = "";
                string password = MyMembershipProvider.ToHashString(nhaTuyenDung.PassWord);
                dt.spDangKyNhaTuyenDung(nhaTuyenDung.UserName, password, nhaTuyenDung.Date.ToString(), nhaTuyenDung.Ten, nhaTuyenDung.NgayDangKy, nhaTuyenDung.GioiThieu, nhaTuyenDung.QuyMo,
                                    nhaTuyenDung.Email, nhaTuyenDung.NguoiLienHe, nhaTuyenDung.DienThoai, nhaTuyenDung.Didong, nhaTuyenDung.Fax, nhaTuyenDung.SoTaiKhoan, nhaTuyenDung.DiaChi, nhaTuyenDung.MaTinhThanh, ref flag);

                if (flag == "0")
                    return false;
                else
                    return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        public static NhaTuyenDung_DTO LayDanhSachThongTinNhaTuyenDungTheoUserID(int user_id)
        {
            try
            {
                var danhSachThongTin = dt.spLayThongTinNhaTuyendungTheoUserID(user_id);

                NhaTuyenDung_DTO nhaTuyenDung = new NhaTuyenDung_DTO();

                foreach (var ds in danhSachThongTin)
                {
                    if (ds.MaTinhThanh != null)
                        nhaTuyenDung.MaTinhThanh = (int)ds.MaTinhThanh;
                    nhaTuyenDung.UserName = ds.Username;
                    nhaTuyenDung.Ten = ds.Ten;
                    nhaTuyenDung.Email = ds.Email;
                    nhaTuyenDung.DienThoai = ds.DienThoai;
                    nhaTuyenDung.Didong = ds.DiDong;
                    nhaTuyenDung.DiaChi = ds.DiaChi;
                    nhaTuyenDung.NguoiLienHe = ds.NguoiLienHe;
                    nhaTuyenDung.GioiThieu = ds.GioiThieu;
                    nhaTuyenDung.QuyMo = ds.Quymo;
                    nhaTuyenDung.SoTaiKhoan = ds.SoTaiKhoan;
                    nhaTuyenDung.Fax = ds.Fax;

                }

                return nhaTuyenDung;
            }
            catch (Exception)
            {
                return null;
            }


        }

        public static bool CapNhatThongTinNhaTuyenDung(int user_id, NhaTuyenDung_DTO nhaTuyenDung)
        {
            try
            {
                string flag = "";
                dt.spUpdateNhaTuyenDung(user_id, nhaTuyenDung.Ten, nhaTuyenDung.GioiThieu, nhaTuyenDung.QuyMo, nhaTuyenDung.Email, nhaTuyenDung.NguoiLienHe, nhaTuyenDung.DienThoai, nhaTuyenDung.Didong, nhaTuyenDung.Fax, nhaTuyenDung.SoTaiKhoan, nhaTuyenDung.DiaChi, nhaTuyenDung.MaTinhThanh, ref flag);

                if (flag == "1")
                    return true;
                else
                    return false;
            }
            catch (Exception)
            {
                return false;
            }


        }

        public static int KiemTraTaiKhoan(string cardNumber, string password)
        {
            try
            {
                Bank_Service service = new Bank_Service();
                return service.KiemTraTaiKhoan(cardNumber, password);

            }
            catch
            {
                return 2;
            }
        }

        public static BankAccount LayThongTinTaiKhoan(string cardNumber)
        {
            BankAccount account = new BankAccount();
            try
            {
                
                Bank_Service service = new Bank_Service();
                Account account_service = new Account();
                account_service = service.LayThongTinTaiKhoan(cardNumber);

                account = ChuyenAccountService_Account(account_service);

            }
            catch
            {
                return null;
            }
            return account;
        }

        private static BankAccount ChuyenAccountService_Account(Account account_service)
        {
            BankAccount account = new BankAccount();
            account.Owner = account_service.Owner;
            account.Balance = account_service.Balance;
            return account;
        }

        public static int KiemTraSoTaiKhoanHopLe(string cardNumber)
        {
            try
            {
                Bank_Service service = new Bank_Service();
                bool ketqua = service.KiemTraSoTaiKhoanHopLe(cardNumber);
                if (ketqua != true)
                { return 0; }
            }
            catch
            {
                return 2;
            }
            return 1;
        }

        public static int ChuyenTien(string taiKhoanGui, string soTien, string taiKhoanNhan)
        {
            try
            {
                Bank_Service service = new Bank_Service();
                return service.ChuyenTien(taiKhoanGui, Convert.ToDouble(soTien), taiKhoanNhan);
            }
            catch
            {
                return 2;
            }

        }

        public static int DongPhi(int userid, int maPhi, DateTime ngayBatDau, string hinhThucThanhToan)
        {
            try
            {
                string Flag = "3";
                dt.spNhaTuyenDungDongPhi(userid, maPhi, ngayBatDau, hinhThucThanhToan, ref Flag);

                return int.Parse(Flag);
            }
            catch
            {
                return 2;
            }
        }

        public static int KiemTraDongPhiHopLe(int userid)
        {
            try
            {
                string Flag = "3";
                dt.spKiemTraDongPhiHopLe(userid, ref Flag);
                return int.Parse(Flag);
            }
            catch
            {
                return 2;
            }
        }


        public static int KiemTraDangTin(int userID)
        {
            try
            {
                string flag = "";
                dt.spKiemTraDangTin(userID, ref flag);

                if (flag == "1")
                    return 1;
                else
                    return 0;
            }
            catch (Exception)
            {
                return 2;
            }
        }

        //new update 
        public static IEnumerable LayCVUpload(int userID)
        {
            return dt.spLayCVUploadGuiNhaTuyenDung(userID).AsEnumerable();
        }

        public static IEnumerable DanhSachNhaTuyenDung()
        {
            return dt.spDanhSachCacNhaTuyenDung().AsEnumerable();
        }

        public static List<NhaTuyenDung_DTO> LayDanhSachNhaTuyenDung()
        {
            try
            {
                var danhSachThongTin = dt.spLayDanhSachNhaTuyenDung();

                List<NhaTuyenDung_DTO> dsNhaTuyenDung = new List<NhaTuyenDung_DTO>();

                foreach (var ds in danhSachThongTin)
                {
                    NhaTuyenDung_DTO nhaTuyenDung = new NhaTuyenDung_DTO();
                    nhaTuyenDung.MaNhaTuyenDung = ds.manhatuyendung;
                    nhaTuyenDung.Ten = ds.Ten;
                    nhaTuyenDung.Email = ds.email;
                    nhaTuyenDung.DienThoai = ds.dienthoai;
                    nhaTuyenDung.Didong = ds.didong;
                    nhaTuyenDung.DiaChi = ds.diachi;
                    nhaTuyenDung.NguoiLienHe = ds.nguoilienhe;
                    nhaTuyenDung.SoTaiKhoan = ds.sotaikhoan;
                    nhaTuyenDung.User_ID = Convert.ToInt32(ds.user_id);
                    dsNhaTuyenDung.Add(nhaTuyenDung);

                }

                return dsNhaTuyenDung;
            }
            catch (Exception)
            {
                return null;
            }

        }

        public static List<NhaTuyenDung_DTO> LayDanhSachNhaTuyenDung(string tuKhoa)
        {
            try
            {
                var danhSachThongTin = dt.spLayDanhSachNhaTuyenDung_TuKhoa(tuKhoa);

                List<NhaTuyenDung_DTO> dsNhaTuyenDung = new List<NhaTuyenDung_DTO>();

                foreach (var ds in danhSachThongTin)
                {
                    NhaTuyenDung_DTO nhaTuyenDung = new NhaTuyenDung_DTO();
                    nhaTuyenDung.MaNhaTuyenDung = ds.manhatuyendung;
                    nhaTuyenDung.Ten = ds.Ten;
                    nhaTuyenDung.Email = ds.email;
                    nhaTuyenDung.DienThoai = ds.dienthoai;
                    nhaTuyenDung.Didong = ds.didong;
                    nhaTuyenDung.DiaChi = ds.diachi;
                    nhaTuyenDung.NguoiLienHe = ds.nguoilienhe;
                    nhaTuyenDung.SoTaiKhoan = ds.sotaikhoan;
                    nhaTuyenDung.User_ID = Convert.ToInt32(ds.user_id);
                    nhaTuyenDung.TenTinhThanh = ds.TenTinhThanh;
                    nhaTuyenDung.TenPhi = ds.TenPhi;
                    nhaTuyenDung.TinhTrangPhi = Convert.ToInt32(ds.tinhtrang);
                    dsNhaTuyenDung.Add(nhaTuyenDung);

                }

                return dsNhaTuyenDung;
            }
            catch (Exception)
            {
                return null;
            }
        }
    }
}
